import axios from  "axios";
const request  =  axios.create({
    baseURL:import.meta.env.VITE_API_BASE_URL,
    timeout:5000 //请求超时设置
})

//request 拦截器
// 可以自请求发送前对请求做一些处理
request.interceptors.request.use(config => {
    config.headers['Content-Type'] = 'application/json;charset=utf-8';

    // ======== 新增的智能判断逻辑 开始 ========

    // 检查请求的URL是否是登录或注册接口
    if (config.url === '/login' || config.url === '/register') {
        // 如果是，则不添加 Authorization 请求头，直接发送请求
        return config;
    }
    // ======== 新增的智能判断逻辑 结束 ========

    // 对于所有其他请求，都尝试添加 Authorization 请求头
   else {
        const token = localStorage.getItem("jwt_token");
        if (token) {
            config.headers.Authorization = `Bearer ${token}`;
        }
    }
    return config;
}, error => {
    return Promise.reject(error)
});
//可以在接口响应后统一处理结果
request.interceptors.response.use(
    response =>{
        let res = response.data;
    //     兼容服务器端返回的字符串数据
        if(typeof res === 'string') {
            res = res ?   JSON.parse(res) : res
        }
        return res;
    },
    error => {
        if (error.response.status === 401) {
            ElMessage.error('认证失败，请重新登录');
            localStorage.removeItem("jwt_token");
            localStorage.removeItem("zwy-user");
            location.href = '/login';
        } else if(error.response.status === 404){
            ElMessage.error('服务器未找到该接口')
        }else if(error.response.status === 500){
            ElMessage.error('服务器内部错误')
        }else{
            console.error(error.message)
        }
        return Promise.reject(error)
    }
)
export default request